package fr.uniscol.siecle.readers;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.filter.Filters;
import org.jdom2.xpath.XPathExpression;
import org.jdom2.xpath.XPathFactory;

import fr.uniscol.siecle.model.AnneeScolaire;
import fr.uniscol.siecle.model.FichierExportSiecle;
import fr.uniscol.siecle.model.FichierExportSiecleCommuns;
import fr.uniscol.siecle.model.UAJ;

public class FichierSIECLECommunsReader extends FichierSIECLEReader {
	
	public FichierExportSiecle readFromDOM(Document dom) {
		
		FichierExportSiecleCommuns communs = new FichierExportSiecleCommuns();
		
		communs.readParametresFromDOM(dom);
		
		XPathExpression<Element> xp = XPathFactory.instance().compile("//DONNEES/UAJ", Filters.element());
		Element eUaj = xp.evaluateFirst(dom);
		
		if(eUaj != null){
			UAJ uaj = new UAJ();
			uaj.setUaj(communs.getParametreUaj());
			uaj.setId(Integer.parseInt(eUaj.getChildText("ETAB_UAJ_ID")));
			uaj.setNumeroSiren(eUaj.getChildText("NUM_SIREN"));
			uaj.setDenominationPrincipale(eUaj.getChildText("DENOM_PRINC"));
			uaj.setDenominationComplete(eUaj.getChildText("DENOM_COMPL"));
			uaj.setAdresse1(eUaj.getChildText("LIGNE1_ADRESSE"));
			uaj.setAdresse2(eUaj.getChildText("LIGNE2_ADRESSE"));
			uaj.setAdresse3(eUaj.getChildText("LIGNE3_ADRESSE"));
			uaj.setBoitePostale(eUaj.getChildText("BOITE_POST"));
			uaj.setCommuneEtrangere(eUaj.getChildText("COMMUNE_ETRANGERE"));
			uaj.setTelephone(eUaj.getChildText("TELEPHONE"));
			uaj.setMail(eUaj.getChildText("MEL_1"));
			uaj.setSecteur(eUaj.getChildText("SECTEUR_CODE"));
			uaj.setCodePostal(eUaj.getChildText("CODE_POSTAL"));
			
			communs.setUaj(uaj);
		}
		
		xp = XPathFactory.instance().compile("//DONNEES/ANNEE_SCOLAIRE", Filters.element());
		Element eAnnee = xp.evaluateFirst(dom);
		if(eAnnee != null){
			AnneeScolaire annee = new AnneeScolaire();
			
			SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
			
			Date debutEleves;
			Date finEleves;
			Date debutEnseignants;
			Date finEnseignants;
			
			try {
				debutEleves = df.parse(eAnnee.getChildText("DATE_DEBUT_ELEVE"));
				annee.setDebutEleves(debutEleves);
				
				finEleves = df.parse(eAnnee.getChildText("DATE_FIN_ELEVE"));
				annee.setFinEleves(finEleves);
				
				debutEnseignants = df.parse(eAnnee.getChildText("DATE_DEBUT_PROF"));
				annee.setDebutEnseignants(debutEnseignants);
				
				finEnseignants = df.parse(eAnnee.getChildText("DATE_FIN_PROF"));
				annee.setFinEnseignants(finEnseignants);
				
			} catch (ParseException e) {
				e.printStackTrace();
			}
			
			communs.setAnneeScolaire(annee);
		}
		
		return communs;
	}
}
